﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LM.InterfacesFabricas.DTOs;
using LM.Negocio.Objetos;
using LM.Repositorios.Interfaces;

namespace LM.Repositorios.Conversores
{
    public class ConversorDeEndereco
    {
        public Endereco Converta(DtoEndereco dtoEndereco)
        {
            var endereco = new Endereco();

            endereco.Codigo = dtoEndereco.Codigo;
            endereco.Logradouro = dtoEndereco.Logradouro;
            endereco.Numero = dtoEndereco.Numero;
            endereco.Bairro = dtoEndereco.Bairro;
            endereco.Lote = dtoEndereco.Lote;
            endereco.Quadra = dtoEndereco.Quadra;
            endereco.Complemento = dtoEndereco.Complemento;
            endereco.Cep = dtoEndereco.Cep;
            endereco.Uf = dtoEndereco.Uf;
            endereco.Cidade = dtoEndereco.Cidade;

            return endereco;
        }

        public DtoEndereco Converta(Endereco endereco)
        {
            var dtoEndereco = new DtoEndereco();

            dtoEndereco.Codigo = endereco.Codigo;
            dtoEndereco.Logradouro = endereco.Logradouro;
            dtoEndereco.Numero = endereco.Numero;
            dtoEndereco.Bairro = endereco.Bairro;
            dtoEndereco.Lote = endereco.Lote;
            dtoEndereco.Quadra = endereco.Quadra;
            dtoEndereco.Complemento = endereco.Complemento;
            dtoEndereco.Cep = endereco.Cep;
            dtoEndereco.Uf = endereco.Uf;
            dtoEndereco.Cidade = endereco.Cidade;

            return dtoEndereco;
        }

        public Endereco ConvertaParaObjetoPersistido(DtoEndereco dtoEndereco)
        {
            var enderecoPersistido = FabricaDeRepositorios.Crie<IRepositorioDeEndereco>().Consulte(dtoEndereco.Codigo);

            var enderecoConvertido = Converta(dtoEndereco);
            enderecoConvertido.Id = enderecoPersistido.Id;

            return enderecoConvertido;
        }

    }
}
